--           Network Working Group                                  J. Case
--           Request for Comments: 1448                 SNMP Research, Inc.
--                                                            K. McCloghrie
--                                                       Hughes LAN Systems
--                                                                  M. Rose
--                                             Dover Beach Consulting, Inc.
--                                                            S. Waldbusser
--                                               Carnegie Mellon University
--                                                               April 1993


--                                Protocol Operations
--                                for version 2 of the
--                    Simple Network Management Protocol (SNMPv2)

               SNMPv2-PDU DEFINITIONS ::= BEGIN

               IMPORTS
                   ObjectName, ObjectSyntax, Integer32
                       FROM SNMPv2-SMI;


               -- protocol data units

               PDUs ::=
                   CHOICE {
                       get-request
                           GetRequest-PDU,

                       get-next-request
                           GetNextRequest-PDU,

                       get-bulk-request
                           GetBulkRequest-PDU,

                       response
                           Response-PDU,

                       set-request
                           SetRequest-PDU,

                       inform-request
                           InformRequest-PDU,

                       snmpV2-trap
                           SNMPv2-Trap-PDU
                   }


               -- PDUs

               GetRequest-PDU ::=
                   [0]
                       IMPLICIT PDU

               GetNextRequest-PDU ::=
                   [1]
                       IMPLICIT PDU

               Response-PDU ::=
                   [2]
                       IMPLICIT PDU

               SetRequest-PDU ::=
                   [3]
                       IMPLICIT PDU

               -- [4] is obsolete

               GetBulkRequest-PDU ::=
                   [5]
                       IMPLICIT BulkPDU

               InformRequest-PDU ::=
                   [6]
                       IMPLICIT PDU

               SNMPv2-Trap-PDU ::=
                   [7]
                       IMPLICIT PDU

               max-bindings
                   INTEGER ::= 2147483647

               PDU ::=
                   SEQUENCE {
                       request-id
                           Integer32,

                       error-status            -- sometimes ignored
                           INTEGER {
                               noError(0),
                               tooBig(1),
                               noSuchName(2),   -- for proxy compatibility
                               badValue(3),     -- for proxy compatibility
                               readOnly(4),     -- for proxy compatibility
                               genErr(5),
                               noAccess(6),
                               wrongType(7),
                               wrongLength(8),
                               wrongEncoding(9),
                               wrongValue(10),
                               noCreation(11),
                               inconsistentValue(12),
                               resourceUnavailable(13),
                               commitFailed(14),
                               undoFailed(15),
                               authorizationError(16),
                               notWritable(17),
                               inconsistentName(18)
                           },

                       error-index            -- sometimes ignored
                           INTEGER (0..max-bindings),

                       variable-bindings   -- values are sometimes ignored
                           VarBindList
                   }


               BulkPDU ::=                     -- MUST be identical in
                   SEQUENCE {                  -- structure to PDU
                       request-id
                           Integer32,

                       non-repeaters
                           INTEGER (0..max-bindings),

                       max-repetitions
                           INTEGER (0..max-bindings),

                       variable-bindings       -- values are ignored
                           VarBindList
                   }


               -- variable binding

               VarBind ::=
                   SEQUENCE {
                       name
                           ObjectName,

                       CHOICE {
                           value
                               ObjectSyntax,

                           unSpecified         -- in retrieval requests
                                   NULL,

                                               -- exceptions in responses
                           noSuchObject[0]
                                   IMPLICIT NULL,

                           noSuchInstance[1]
                                   IMPLICIT NULL,

                           endOfMibView[2]
                                   IMPLICIT NULL
                       }
                   }


               -- variable-binding list

               VarBindList ::=
                   SEQUENCE (SIZE (0..max-bindings)) OF
                       VarBind


               END